package jk.fox.engine;

import jk.fox.engine.listener.RpcServiceStartedListener;

/**
 * @author cuichao
 * Rpc引擎入口模块
 */
public interface RpcEngine {

    /**
     * 注册消费者
     * @param target
     */
    void registry(Class target);
    /**
     * 注册服务者
     * @param target
     * @param object
     */
     void registry(Class target, Object object);

    /**
     * 获取消费者实例
     * @param key
     * @return
     */
     Object getConsumer(String key);
    /**
     * 获取服务实例
     * @param key
     * @return
     */
    Object getProvider(String key);
    /**
     * 获取到Rpc服务注册信息
     * @param key
     * @return
     */
    RpcNodeDefinition getDefinition(String key);

    /**
     * 启动Rpc服务
     * @throws Exception
     */
    void start() throws Exception;


    void addRpcServiceStartedListener(RpcServiceStartedListener listener);


}
